# Build configuration:

# Target device. May be one of:
#	t13	=> ATTiny13
#	t25	=> ATTiny25
#	t45	=> ATTiny45
#	t85	=> ATTiny85
#	m328p	=> ATMega328P
DEV			:= t85

# Load pulse configuration (all values in milliseconds):

# Minimum length of high-phase:
CONF_HIGH_MIN_MS	:= 4
# Maximum length of high-phase:
CONF_HIGH_MAX_MS	:= 6
# Minimum length of low-phase:
CONF_LOW_MIN_MS		:= 40000
# Maximum length of low-phase:
CONF_LOW_MAX_MS		:= 55000


##############################################################################
##############################################################################
##############################################################################

$(info	DEV=$(DEV) \
	CONF_HIGH_MIN_MS=$(CONF_HIGH_MIN_MS) \
	CONF_HIGH_MAX_MS=$(CONF_HIGH_MAX_MS) \
	CONF_LOW_MIN_MS=$(CONF_LOW_MIN_MS) \
	CONF_LOW_MAX_MS=$(CONF_LOW_MAX_MS))

# Project name
NAME			:= pbwake

# Project source files
SRCS			:= \
			bitops.c \
			load.c \
			main.c \
			shr3.c \
			watchdog.c

GEN_SRCS		:=

# Bootloader source files
BOOT_SRCS		:=
BOOT_GEN_SRCS		:=
BOOT_OFFSET		:=

ifeq ($(DEV),t13)
# ATTiny 13
# 128 kHz, SUT 64 ms, BOD 2.7 V, WDT on, SPIEN
F_CPU			:= 128000UL
LFUSE			:= 0x5B
HFUSE			:= 0xFB
EFUSE			:=
endif

ifeq ($(DEV),t25)
# ATTiny 25
# 128 kHz, SUT 64 ms, BOD 2.7 V, WDT on, SPIEN
F_CPU			:= 128000UL
LFUSE			:= 0xE4
HFUSE			:= 0xCD
EFUSE			:= 0xFF
endif

ifeq ($(DEV),t45)
# ATTiny 45
# 128 kHz, SUT 64 ms, BOD 2.7 V, WDT on, SPIEN
F_CPU			:= 128000UL
LFUSE			:= 0xE4
HFUSE			:= 0xCD
EFUSE			:= 0xFF
endif

ifeq ($(DEV),t85)
# ATTiny 85
# 128 kHz, SUT 64 ms, BOD 2.7 V, WDT on, SPIEN
F_CPU			:= 128000UL
LFUSE			:= 0xE4
HFUSE			:= 0xCD
EFUSE			:= 0xFF
endif

ifeq ($(DEV),m328p)
# ATMega 328P
# 128 kHz, SUT 65 ms, BOD 2.7 V, WDT on, SPIEN
F_CPU			:= 128000UL
LFUSE			:= 0xE3
HFUSE			:= 0xC9
EFUSE			:= 0xFD
endif

# Architecture configuration
GCC_ARCH		:= $(subst m,atmega,$(subst t,attiny,$(DEV)))
AVRDUDE_ARCH		:= $(DEV)
FUNC_STACK_LIMIT	:=

# Programmer selection.
# Values can be:  avrisp2, mysmartusb
PROGRAMMER		:= avrisp2
AVRDUDE_SPEED		:= 50
AVRDUDE_SLOW_SPEED	:= 200

# Instrumentation
INSTRUMENT_FUNC		:=
BOOT_INSTRUMENT_FUNC	:=

# Additional compiler flags
CFLAGS			:= -DCONF_HIGH_MIN_MS="$(CONF_HIGH_MIN_MS)" \
			   -DCONF_HIGH_MAX_MS="$(CONF_HIGH_MAX_MS)" \
			   -DCONF_LOW_MIN_MS="$(CONF_LOW_MIN_MS)" \
			   -DCONF_LOW_MAX_MS="$(CONF_LOW_MAX_MS)"
BOOT_CFLAGS		:= $(CFLAGS)
LDFLAGS			:=

# Additional "clean" and "distclean" target files
CLEAN_FILES		:=
DISTCLEAN_FILES		:=


streq = $(and $(filter 1,$(words $2)),$(filter $1,$(firstword $2)))
deveq = $(call streq,$1,$(DEV))

ifeq ($(strip $(call deveq,t13)\
	      $(call deveq,t25)\
	      $(call deveq,t45)\
	      $(call deveq,t85)\
	      $(call deveq,m328p)),)
$(error "DEV=$(DEV) is not supported.")
endif

include avrmakelib.mk
